[INV-BACKEND-031] Создать метод rpc mutateRecipeBalances(RecipeDeductRequest)

Реализация gRPC-метода каскадного FIFO-вычета с теневым маскированием

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи

  • Инструкция по шагам:
    1. Принять gRPC-запрос мутации балансов от сервиса готовки. Открыть ACID-транзакцию в PostgreSQL Fridge DB.
    2. На Шаге 12–13: Оценить параметр space_type на развилке Space_Check.
      • Если space_type == "OFFICE" (Шаг 13а): Проверить физическое наличие сырья на балансе. Если расход превышает фактический остаток партии — выполнить принудительный ROLLBACK и вернуть gRPC-ошибку приложения INSUFFICIENT_STOCK.
      • Если space_type == "HOME" (Шаг 13б): Выполнить каскадный вычет объемов из таблицы fridge_inventory по FIFO-индексу (created_at ASC). Разрешить уход баланса списываемых партий в реальный отрицательный показатель (знак минус в ячейке СУБД) для фиксации скрытого дефицита.
    3. На Шаге 14–15 (Паттерн Data Masking): Выгрузить измененные балансы для формирования gRPC-ответа. Реализовать транспортный фильтр-маскировщик: если результирующий вес записи в БД < 0, динамически подменить это значение на 0 в исходящем protobuf/JSON пакете для шлюза, исключая трансляцию отрицательных чисел на мобильный клиент.
    4. Сделать INSERT записи готового порционного блюда в инвентарь холодильника, зафиксировать транзакцию (COMMIT) и отдать gRPC-ответ.